package com.tanhua.server.exception;

import com.tanhua.model.vo.ErrorResult;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;

/**
 *@ControllerAdvice：声明异常处理器
 *      统一异常处理器
 *          当controller抛出异常时，会自动执行此类中的方法
 */
@ControllerAdvice
public class ExceptionAdvice {

    /**
     * 方法：
     *   返回值和Controller中是一致
     *   参数和Controller获取一致：request,response
     *   参数还可以获取到Controller中的异常类型
     * @ExceptionHandler：
     *   配置此方法，可以处理的异常类型
     */
    @ExceptionHandler(value=Exception.class)
    public ResponseEntity handlerException(Exception e) {
        e.printStackTrace();
        //返回给前端，错误信息
        return ResponseEntity.status(500).body(ErrorResult.error());
    }

    @ExceptionHandler(value=BusinessException.class)
    public ResponseEntity handlerBusinessException(BusinessException e) {
        //获取指定的数据
        ErrorResult result = e.getResult();
        e.printStackTrace();
        //返回给前端，错误信息
        return ResponseEntity.status(500).body(result);
    }
}
